# 使用list和tuple
# Python内置的一种数据类型是列表：list。list是一种有序的集合，可以随时添加和删除其中的元素
students = ['张三','李四','王五']
print(students)
print(len(students))    # 用len()函数可以获得list元素的个数
# 用索引来访问list中每一个位置的元素，记得索引是从0开始的
print(students[0])
# 如果要取最后一个元素，除了计算索引位置外(最后一个元素的索引是len(students) - 1)，还可以用-1做索引，直接获取最后一个元素
print(students[-1])
# list是一个可变的有序表，所以，可以往list中追加元素到末尾
students.append('添加一个')
print(students)
# 也可以把元素插入到指定的位置，比如索引号为1的位置
students.insert(1,'插入到位置1')
print(students)
# 要删除list末尾的元素，用pop()方法
students.pop()
print(students)
# 要删除指定位置的元素，用pop(i)方法，其中i是索引位置
students.pop(0)
print(students)
# 要把某个元素替换成别的元素，可以直接赋值给对应的索引位置
students[0] = students[0] + '替换'
print(students)
# list里面的元素的数据类型也可以不同
user = ['张三', 25, '男', '1997-5-8', True]
print(user)
# list元素也可以是另一个list
dept = ['商务', '运营', ['开发1', '开发2', '开发3'], '产品']
print(dept)
print(dept[2][2])

# 另一种有序列表叫元组：tuple。tuple和list非常类似，但是tuple一旦初始化就不能修改,它也没有append()，insert()这样的方法。其他获取元素的方法和list是一样的
person = ('男人', '女人')
print(person)
# 如果要定义一个空的tuple，可以写成()
person2 = ()
print(len(person2))
person3 = ('test1')     # 定义一个只有1个元素的tuple，这么定义不是tuple，这是因为括号()既可以表示tuple，又可以表示数学公式中的小括号
print(len(person3))
person4 = ('test2',)   # 所以，只有1个元素的tuple定义时必须加一个逗号,
print(len(person4))

# # “可变的”tuple
# 表面上看，tuple的元素确实变了，但其实变的不是tuple的元素，而是list的元素。tuple一开始指向的list并没有改成别的list，
# 所以，tuple所谓的“不变”是说，tuple的每个元素，指向永远不变。
# 即指向'a'，就不能改成指向'b'，指向一个list，就不能改成指向其他对象，但指向的这个list本身是可变的！
person5 = ('a', 'b', ['A', 'B'])
print(person5)
person5[2][0] = 'X'
person5[2][1] = 'Y'
print(person5)

